﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados.Interfaces;
using Dados.ValueObjects;
using Dados.INFTURDataSetTableAdapters;

namespace Dados.ClassesSQLServer
{
    public class PacoteSQLServer : IPacote
    {
        T_PACOTETableAdapter pacoteTA = new T_PACOTETableAdapter();


        #region IPacote Members

        public int Insere(PacoteVO pVO)
        {
            try
            {
              return  pacoteTA.Insert(pVO.Nome,pVO.Descricao,pVO.DataInicio,
                  pVO.DataFim,pVO.Hotel,pVO.Destino,pVO.Preco,pVO.Parcelamento);              
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            
        }

        public int Atualiza(PacoteVO pVO)
        {
            try
            {
                return pacoteTA.Update(pVO.Nome, pVO.Descricao, pVO.DataInicio,
                  pVO.DataFim, pVO.Hotel, pVO.Destino, pVO.Preco, pVO.Parcelamento,
                  pVO.Id);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }

        public int Remove(int ID)
        {
            try
            {
                return pacoteTA.Delete(ID);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public PacoteVO Consulta(int ID)
        {
            try
            {
                PacoteVO pVO = null;
                INFTURDataSet.T_PACOTEDataTable dtPacote = pacoteTA
                    .GetPacotePorId(ID);
                if (dtPacote.Count > 0)
                {
                    pVO = new PacoteVO();
                    pVO.Id = dtPacote[0].nr_id;
                    pVO.Nome = dtPacote[0].tx_nome;
                    pVO.Parcelamento = dtPacote[0].tx_parcelamento;
                    pVO.Preco = dtPacote[0].nr_preco;
                    pVO.DataInicio = dtPacote[0].dt_inicio;
                    pVO.DataFim = dtPacote[0].dt_fim;
                    pVO.Descricao = dtPacote[0].tx_descricao;
                    pVO.Destino = dtPacote[0].nr_destino;
                    pVO.Hotel = dtPacote[0].nr_hotel;
                }
                return pVO;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public List<PacoteVO> ConsultaTodos()
        {
            try
            {
                List<PacoteVO> lpVO = new List<PacoteVO>();
                INFTURDataSet.T_PACOTEDataTable dt = pacoteTA.GetData();

                foreach (INFTURDataSet.T_PACOTERow pRow in dt)
                {
                    PacoteVO pVO = new PacoteVO();
                    pVO.Id = pRow.nr_id;
                    pVO.Nome = pRow.tx_nome;
                    pVO.Hotel = pRow.nr_hotel;
                    pVO.Parcelamento = pRow.tx_parcelamento;
                    pVO.Preco = pRow.nr_preco;
                    pVO.DataInicio = pRow.dt_inicio;
                    pVO.DataFim = pRow.dt_fim;
                    pVO.Descricao = pRow.tx_descricao;
                    pVO.Destino = pRow.nr_destino;

                    lpVO.Add(pVO);

                }
                return lpVO;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        #endregion
    }     
}
